package com.zhisheng.demo00;

public class Test {
    /*某电商平台需要统计商品价格列表中价格大于 100 元商品的数量。
    使用 Stream 和 lambda 表达式，从一个商品价格列表 List<Integer> 中完成统计。
    商品价格数据可直接写死在代码中，例如
     List<Integer> prices = Arrays.asList(50, 120, 80, 150, 90)。*/
   /* public static void main(String[] args) {
        List<Integer> prices = Arrays.asList(50, 120, 80, 150, 90);
        List<Integer> prices2 = new ArrayList<>();

        prices.forEach(s->{
            if(s >100){
                prices2.add(s);
            }
        });
        System.out.println("大于100的有" + prices2.size()+ "个");

    }
*/
/*在一个文件目录管理系统中，需要展示特定目录下所有子目录的名称。
使用递归方法实现，给定一个代表目录的 File 对象
（可直接在代码中实例化，例如 File dir = new File("C:/exampleDir")），
遍历并输出其所有子目录名称。*/
    /*public static void main(String[] args) throws IOException {
        File f = new File("D:\\BaiduNetdiskDownload\\12.23\\课堂代码\\day16-Stream-File\\a");
       method(f);

    }
    private static void method(File dir){
        File[] arr = dir.listFiles();
        for(File file : arr){
            if(file.isDirectory()){
                System.out.println(file.getName());
                method(file);
            }else {
                System.out.println(file.getName());
            }

        }
    }
*/
/*学校的成绩管理系统需要对学生成绩进行等级划分并统计各等级人数。
使用 Collections 工具类对一个学生成绩列表 List<Integer> 进行排序，
然后使用 lambda 表达式划分等级
（90 分及以上为 A 等，80 - 89 分为 B 等，60 - 79 分为 C 等，60 分以下为 D 等），
并统计各等级人数。成绩数据可随机生成，范围在 0 - 100 之间，生成 20 个成绩数据。*/
/*
    static int a = 0;
    static int b = 0;
    static int c = 0;
    static int d = 0;
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        Random random = new Random();
        for (int i = 0; i < 20; i++) {
            list.add(random.nextInt(101));
        }
        list.sort((o1, o2) -> o1 - o2);

        for (Integer integer : list) {
            if (integer >= 90) {
                 a++;
            } else if (integer >= 80) {
                b++;
            } else if (integer >= 70) {
                c++;
            }else {
                d++;
            }
        }
        System.out.print("A:"+a+"   B:" + b +  "    C:"+ c +"   D:"+ d);

    }
}*/
/*在一个音乐播放列表管理系统中，有一个歌曲信息列表 List<Song>，
Song 类包含 name（歌名）、duration（时长）和 artist（歌手）属性。
使用 Stream、lambda、Collections 实现以下功能：
按照歌曲时长对歌曲列表进行排序（从短到长）。
筛选出歌手名字以 A 开头的歌曲，
并将这些歌曲的歌名和歌手名字连接成一个新的字符串列表 List<String>（格式为 “歌名 - 歌手”）。*/
/*
    public static void main(String[] args) {
        List<Song> songs = new ArrayList<Song>();
        songs.add(new Song("送亲",100,"阿琪"));
        songs.add(new Song("十年",98,"A陈奕迅"));
        songs.add(new Song("Hotel California",200,"Aagles"));
        songs.add(new Song("小行星",80,"A汪苏泷"));
        songs.add(new Song("不分手的恋爱",150,"汪苏泷"));
        songs.sort((s1,s2)-> (int) (s1.getDuration()-s2.getDuration()));
        List<String> songs2 = new ArrayList<>();
        songs.forEach(s->{
            if (s.getArtist().startsWith("A")){
                songs2.add(s.getName() + " - "+ s.getArtist());
            }
        });
        System.out.println(songs2);


    }
    }*/

/*在一个员工管理系统中，有一个部门列表 List<Department>，
Department 类包含 name（部门名）和 employees（员工列表，List<Employee>）属性，
Employee 类包含 name（员工姓名）、age（年龄）和 salary（工资）属性。
使用 Stream、lambda、Collections 以及随机数生成器（Random）实现以下功能：

为每个部门的员工工资随机生成数据（工资范围在 3000 - 10000 之间）。
筛选出员工平均年龄大于 30 岁且部门总工资大于 50000 的部门，
将这些部门的名称和部门总工资存储到一个新的 Map<String, Integer> 中。*/

    /*public static void main(String[] args) {
    List<Department> departments = new ArrayList();
    Random random = new Random();
    List<Employee> list1 = new ArrayList<>();
    List<Employee> list2 = new ArrayList<>();
    List<Employee> list3 = new ArrayList<>();
    List<Employee> list4 = new ArrayList<>();
    List<Employee> list5 = new ArrayList<>();
    List<Employee> list6 = new ArrayList<>();
    List<Employee> list7 = new ArrayList<>();

    list1.add(new Employee("李四",23, (random.nextInt(7000)+3000)));
    list2.add(new Employee("王四",25, (random.nextInt(7000)+3000)));
    list3.add(new Employee("赵五",30, (random.nextInt(7000)+3000)));
    list4.add(new Employee("孔乙己",33, (random.nextInt(7000)+3000)));
    list5.add(new Employee("厄绯琉斯",28, (random.nextInt(20000)+3000)));
    list6.add(new Employee("刘备",23, (random.nextInt(7000)+3000)));
    list7.add(new Employee("老头",44, (random.nextInt(23000)+3000)));

    departments.add(new Department("工程部", list1));
    departments.add(new Department("后勤部", list2));
    departments.add(new Department("工程部", list3));
    departments.add(new Department("工程部", list4));
    departments.add(new Department("后勤部", list5));
    departments.add(new Department("后勤部", list6));
    departments.add(new Department("后勤部", list7));
        //Map<String, Integer> map1 = new HashMap();
    Map<String, Integer> map1 = departments.stream().filter(s->
        "后勤部".equals(s.getName())
    ).distinct().collect(Collectors.toMap(y->
        y.getEmployees().get(0).getName()
    ,y->y.getEmployees().get(0).getSalary()));
        Map<String, Integer> map2 = departments.stream().filter(s->
                "工程部".equals(s.getName())
        ).distinct().collect(Collectors.toMap(y->
                        y.getEmployees().get(0).getName()
                ,y->y.getEmployees().get(0).getSalary()));
        System.out.println(map1);
        System.out.println(map2);
    }*/

    /*public static void main(String[] args) throws Exception {
        List<String> list = new ArrayList<>();
        BufferedReader br = new BufferedReader(new FileReader("txt/input.txt"));
        String line;
        while ((line = br.readLine()) != null) {
            list.add(line);
        }
        br.close();

        List<String> list1 = list.stream().map(s->{
            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("MM/dd/yyyy");
            LocalDate date = LocalDate.parse(s, dtf);
            return date.format(dtf1);
        }).toList();
        System.out.println(list);

        HashMap<String,Integer> map = new HashMap<>();
        list1.forEach(s->{
            //将前面部分截
            String key = s.substring(0, s.indexOf("/"));
            //map中根据key获取次数
            Integer i =map.getOrDefault(key,0);
            map.put(key,++i);
        });
        //out.txt
        BufferedWriter bw = new BufferedWriter(new FileWriter("txt/output.txt"));
        map.forEach((k,v)->{
            try {
                bw.write(k + ":" + v);
                bw.newLine();
                bw.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }

        });
    }*/



    public static void main(String[] args) {
       
    }



}

